package interfaces;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import java.util.Vector;

import valueObjects.game.card.Card;

public interface ICardManagement extends Remote{

	/**
	 * Returns all the treasurecards
	 * @return allCards
	 */
	public List<Card> getTreasureCards() throws RemoteException;

	/**
	 * Returns all the doorcards
	 * @return doorCards
	 */
	public List<Card> getDoorCards() throws RemoteException;

	/**
	 * Returns the pick up stack with the door cards
	 * @return
	 */
	public Vector<Card> getPickUpStackDoorCards() throws RemoteException;

	/**
	 * Returns the pick up stack with the door cards
	 * @return
	 */
	public Vector<Card> getPickUpStackTreasureCards() throws RemoteException;

	/**
	 * Returns the last card of the TreasurePUStack
	 * Also removes the card from this Stack
	 * @return TreasureCard
	 */
	public Card getOneCardFromTreasurePickUpStack() throws RemoteException;

	/**
	 * Returns the last card of the DoorPUStack
	 * Also removes the card from this Stack
	 * @return DoorCard
	 */
	public Card getOneCardFromDoorPickUpStack() throws RemoteException;

	/**
	 * Adds a card to the deposit door card stack
	 * @param c
	 */
	public void addDepositDoorCard(Card c) throws RemoteException;

	/**
	 * Adds a card to the deposit treasure card stack
	 * @param c
	 */
	public void addDepositTreasureCard(Card c) throws RemoteException;

}